home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / clikbr15.zip / TESTCLIK.ZIP / TESTCLIK.C < prev    next >
C/C++ Source or Header  |  1993-03-22  |  15KB  |  520 lines

  1. /*============================================================================
  2.   testclik -- Demo program for ClickBar.DLL and ClickDlg.DLL
  3.  
  4.   File      : testclik.c
  5.  
  6.   Prototype : 
  7.  
  8.   Call      : 
  9.  
  10.   Library   : 
  11.  
  12.   7 February 1992 - dlcampbell
  13.   (c) 1991 Campbell SoftWare
  14. ----------------------------------------------------------------------------*/
  15. #define WINVER 0x0300
  16. #include <windows.h>
  17. #include <string.h>
  18. #include <clickdlg.h>
  19. #include <clickbar.h>
  20.  
  21. #include "testclik.h"
  22.  
  23. /*----------------------------------------------------------------------------
  24.   Prototypes
  25. ----------------------------------------------------------------------------*/
  26. BOOL FAR PASCAL AboutDlgProc(HWND, WORD, WORD, LONG);
  27. BOOL FAR PASCAL PickDlgProc(HWND, WORD, WORD, LONG);
  28. void MakeHelpPathName(char *);
  29. long FAR PASCAL WndProc(HWND, WORD, WORD, LONG);
  30.  
  31. short   cxClient, cyClient;
  32. int     InitSettings, OldInitSettings;
  33.  
  34. char    szAppName[] = "testclik";
  35. HANDLE  hInst;
  36. HANDLE  hClickBar, hClickDlg;
  37. HWND    hWndMain;
  38. HWND    hWndDlg = NULL;
  39. HWND    hWndDlg2 = NULL;
  40. HWND    hDlgModeLess;
  41. FARPROC lpfnDisplayDlg, lpfnDlgMove, lpfnDlgSetup, lpfnDlgPlus;
  42. FARPROC lpfnClickBarSetup;
  43. static  FARPROC lpfnPickDlgProc;
  44.  
  45. char    szHelpFileName[EXE_NAME_MAX_SIZE+1];    /* Help file name*/
  46.  
  47. /*============================================================================
  48.   WinMain -- main window procedure for TestClik
  49.  
  50.   File      : testclik.C
  51.  
  52.   Prototype : int PASCAL WinMain (HANDLE, HANDLE, LPSTR, int);
  53.  
  54.   Call      : WinMain (hInstance, hPrevInstance, lpszCmdParam, nCmdShow);
  55.  
  56.   Library   : 
  57.  
  58.   7 February 1992 - dlcampbell
  59.   (c) 1991 Campbell SoftWare
  60. ----------------------------------------------------------------------------*/
  61. #pragma warn -par                       /* nCmdShow, lpszCmdParam not used */
  62. int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  63.                                              LPSTR lpszCmdParam, int nCmdShow)
  64. {
  65. MSG         msg;
  66. WNDCLASS    WndClass;
  67. HDC         hdc;
  68. TEXTMETRIC  tm;
  69. HMENU       hMenu;
  70. GLOBALHANDLE   MyStructHandle;
  71. FPWYNAPSESTRUCT MyStruct;
  72. static char szMenuTitle[21 + 1];
  73.  
  74. if (hPrevInstance)
  75.    return FALSE;
  76.  
  77. WndClass.style         = CS_HREDRAW | CS_VREDRAW;
  78. WndClass.lpfnWndProc   = (WNDPROC)WndProc;
  79. WndClass.cbClsExtra    = 0;
  80. WndClass.cbWndExtra    = 0;
  81. WndClass.hInstance     = hInstance;
  82. WndClass.hIcon         = LoadIcon(hInstance, szAppName);
  83. WndClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
  84. WndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
  85. WndClass.lpszMenuName  = szAppName;
  86. WndClass.lpszClassName = szAppName;
  87.  
  88. RegisterClass(&WndClass);
  89.  
  90. hdc = CreateIC("DISPLAY", NULL, NULL, NULL);
  91.    GetTextMetrics(hdc, &tm);
  92. DeleteDC(hdc);
  93.  
  94. cxClient = GetSystemMetrics(SM_CXSCREEN);
  95. cyClient = GetSystemMetrics(SM_CYSCREEN);
  96.  
  97. hClickBar = LoadLibrary("CLICKBAR.DLL");
  98. if (hClickBar < 32)
  99.    {
  100.    FreeLibrary(hClickBar);
  101.    MessageBox(GetFocus(),"Dynamic Link Library CLICKBAR.DLL must be present",
  102.                                        szAppName, MB_ICONEXCLAMATION | MB_OK);
  103.    return 0;
  104.    }
  105.  
  106. hClickDlg = LoadLibrary("CLICKDLG.DLL");
  107. if (hClickDlg < 32)
  108.     {
  109.    FreeLibrary(hClickDlg);
  110.     MessageBox(GetFocus(),"Dynamic Link Library CLICKDLG.DLL must be present",
  111.                                        szAppName, MB_ICONEXCLAMATION | MB_OK);
  112.    return 0;
  113.     }
  114.  
  115. lpfnDlgSetup      = GetProcAddress(hClickDlg,  "ClickBarDialogSetup");
  116. lpfnDlgMove       = GetProcAddress(hClickDlg,  "ClickBarDialogMove");
  117. lpfnDisplayDlg    = GetProcAddress(hClickDlg,  "ClickBarDialogProc");
  118.  
  119. lpfnClickBarSetup = GetProcAddress(hClickBar,  "ClickBarSetup");
  120.  
  121. MyStructHandle = GlobalAlloc(GHND, sizeof(WYNAPSE_STRUCT));
  122. MyStruct = (FPWYNAPSESTRUCT)GlobalLock(MyStructHandle);
  123.    lstrcpy(MyStruct->RegName, (LPSTR)"Your Name");  /* ClickBar RegName */
  124.    MyStruct->RegNumber = 0;                         /* ClickBar RegNumber */
  125. GlobalUnlock(MyStructHandle);
  126.  
  127. (*lpfnClickBarSetup)(MyStructHandle);
  128.  
  129. GlobalFree(MyStructHandle);
  130.  
  131. hWndMain = CreateWindow(szAppName,   /* window class name */
  132.                            szAppName,  /* window caption */
  133.                            WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
  134.                            CW_USEDEFAULT,      /* initial x pos */
  135.                            CW_USEDEFAULT,      /* initial y pos */
  136.                         CW_USEDEFAULT, /* initial x size */
  137.                         CW_USEDEFAULT, /* initial y size */
  138.                         NULL,               /* parent window handle */
  139.                         NULL,               /* window menu handle */
  140.                         hInstance,          /* program instance handle */
  141.                            NULL);              /* creation parameters */
  142.  
  143. hMenu = GetSystemMenu(hWndMain, FALSE);
  144. AppendMenu(hMenu, MF_SEPARATOR, 0, NULL);
  145. AppendMenu(hMenu, MF_STRING,    IDM_ABOUT, "About...");
  146. AppendMenu(hMenu, MF_STRING,    IDM_Pick, "Pick...");
  147. AppendMenu(hMenu, MF_STRING,    IDWHELP,  "Help....");
  148.  
  149. hInst = hInstance;
  150.  
  151. MakeHelpPathName(szHelpFileName);
  152.  
  153. ShowWindow(hWndMain, nCmdShow);
  154. UpdateWindow(hWndMain);
  155.  
  156. hWndDlg = CreateDialog(hInst, "CLICK", hWndMain,
  157.                                   MakeProcInstance((*lpfnDisplayDlg), hInst));
  158.  
  159. lstrcpy(szMenuTitle, "AbNormal");
  160. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  161. lstrcpy(szMenuTitle, "AsNormal");
  162. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  163. lstrcpy(szMenuTitle, "ProNormal");
  164. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  165. lstrcpy(szMenuTitle, "Not Normal");
  166. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  167. lstrcpy(szMenuTitle, "Huh?");
  168. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  169. lstrcpy((LPSTR)szMenuTitle, "Normal");
  170. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_ADDSTRING, 0, (LONG)(LPSTR)szMenuTitle);
  171.  
  172. SendDlgItemMessage(hWndDlg, IDXCOMBO, CB_SELECTSTRING, -1, (LONG)(LPSTR)szMenuTitle);
  173.  
  174. SendMessage(hWndMain, WM_NCACTIVATE, 1, 0L);
  175.  
  176. while (GetMessage(&msg, NULL, 0, 0))
  177.    {
  178.    if ((hWndDlg == 0 || !IsDialogMessage(hWndDlg, &msg)) && (hDlgModeLess == 0 || !IsDialogMessage(hDlgModeLess, &msg)))
  179.       {
  180.       TranslateMessage(&msg);
  181.       DispatchMessage(&msg);
  182.       }
  183.    }
  184.  
  185.  
  186. /*----------------------------------------------------------------------------
  187.   Now free the DLLs used in the application...
  188. ----------------------------------------------------------------------------*/
  189. FreeLibrary(hClickBar);
  190. FreeLibrary(hClickDlg);
  191.  
  192. return msg.wParam;
  193. }                                       /* int PASCAL WinMain */
  194. #pragma warn .par
  195.  
  196. /*============================================================================
  197.   AboutDlgProc -- Displays the EGO box for the application
  198.  
  199.   File      : ExitWin.C
  200.  
  201.   Prototype : BOOL FAR PASCAL AboutDlgProc (HWND, WORD, WORD, LONG)
  202.  
  203.   Call      : AboutDlgProc (hDlg, message, wParam, lParam)
  204.  
  205.   Library   : 
  206.  
  207.   7 February 1992 - dlcampbell
  208.   (c) 1991 Campbell SoftWare
  209. ----------------------------------------------------------------------------*/
  210. BOOL FAR PASCAL AboutDlgProc (HWND hDlg, WORD message, WORD wParam,
  211.                                                                   LONG lParam)
  212. {
  213. char szBuffer[100];
  214.  
  215. switch (message)
  216.    {
  217.    case WM_INITDIALOG :
  218.       wsprintf(szBuffer, "%s at %s", (LPSTR) __DATE__, (LPSTR) __TIME__);
  219.       SetWindowText(GetDlgItem(hDlg, ID_VERSION), szBuffer);
  220.       return TRUE;
  221.  
  222.    case WM_COMMAND :
  223.       switch (wParam)
  224.          {
  225.          case IDOK :
  226.          case IDCANCEL :
  227.             if (HIWORD(lParam) == BN_CLICKED)
  228.                EndDialog(hDlg, wParam);
  229.             return TRUE;
  230.  
  231.          default :
  232.             return TRUE;
  233.          }
  234.  
  235.    default :
  236.       return FALSE;
  237.    }
  238. }                                       /* AboutDlgProc */
  239.  
  240. /*============================================================================
  241.   PickDlgProc -- Displays the EGO box for the application
  242.  
  243.   File      : ExitWin.C
  244.  
  245.   Prototype : BOOL FAR PASCAL PickDlgProc (HWND, WORD, WORD, LONG)
  246.  
  247.   Call      : PickDlgProc (hDlg, message, wParam, lParam)
  248.  
  249.   Library   : 
  250.  
  251.   7 February 1992 - dlcampbell
  252.   (c) 1991 Campbell SoftWare
  253. ----------------------------------------------------------------------------*/
  254. BOOL FAR PASCAL PickDlgProc (HWND hDlg, WORD message, WORD wParam,
  255.                                                                   LONG lParam)
  256. {
  257. char szBuffer[100];
  258. static char szType[30 + 1];
  259.  
  260. switch (message)
  261.    {
  262.    case WM_COMMAND :
  263.       switch (wParam)
  264.          {
  265.          case IDRWLRARROW :
  266.             if (HIWORD(lParam) == BN_CLICKED)
  267.                DestroyWindow(hDlg);
  268.             return TRUE;
  269.  
  270.          case IDRWBRUSH : 
  271.             strcpy(szType, "IDRWBRUSH");
  272.             break;
  273.  
  274.          case IDRWCUT : 
  275.             strcpy(szType, "IDRWCUT");
  276.             break;
  277.  
  278.          case IDRWDARROW : 
  279.             strcpy(szType, "IDRWDARROW");
  280.             break;
  281.  
  282.          case IDRWERASE : 
  283.             strcpy(szType, "IDRWERASE");
  284.             break;
  285.  
  286.          case IDRWKEY : 
  287.             strcpy(szType, "IDRWKEY");
  288.             break;
  289.  
  290.          case IDRWLARROW : 
  291.             strcpy(szType, "IDRWLARROW");
  292.             break;
  293.  
  294.          case IDRWLRMARGIN : 
  295.             strcpy(szType, "IDRWLRMARGIN");
  296.             break;
  297.  
  298.          default :
  299.             return TRUE;
  300.          }
  301.  
  302.       MessageBox(GetFocus(), szType, szAppName, MB_ICONEXCLAMATION | MB_OK);
  303.       return 0;
  304.  
  305.    case WM_CLOSE : 
  306.       DestroyWindow(hDlg);
  307.       hDlgModeLess = 0;
  308.       break;
  309.  
  310.    default :
  311.       return FALSE;
  312.    }
  313. }                                       /* PickDlgProc */
  314.  
  315. /*============================================================================
  316.   WndProc -- handles all Windows functions for the application
  317.  
  318.   File      : testclik.C
  319.  
  320.   Prototype : long FAR PASCAL WndProc(HWND, WORD, WORD, LONG);
  321.  
  322.   Call      : WndProc(hWnd, message, wParam, lParam);
  323.  
  324.   Library   :
  325.  
  326.   7 February 1992 - dlcampbell
  327.   (c) 1991 Campbell SoftWare
  328. ----------------------------------------------------------------------------*/
  329. long FAR PASCAL WndProc (HWND hWnd, WORD message, WORD wParam, LONG lParam)
  330. {
  331. static FARPROC lpfnAboutDlgProc;
  332. static char szType[30 + 1];
  333. HMENU  hMainMenu;
  334.  
  335. switch (message)
  336.    {
  337.    case WM_NCCREATE:
  338.       (*lpfnDlgSetup)(hWnd);
  339.  
  340. /*----------------------------------------------------------------------------
  341.   Allow Windows to allocate memory for window.
  342. ----------------------------------------------------------------------------*/
  343.       if (!((BOOL) DefWindowProc(hWnd, message, wParam, lParam)))
  344.          return 0;
  345.  
  346.       return TRUE;
  347.  
  348.    case WM_SYSCOMMAND :
  349.       switch (wParam)
  350.          {
  351.          case IDM_ABOUT :
  352.             lpfnAboutDlgProc = MakeProcInstance(AboutDlgProc, hInst);
  353.             DialogBox(hInst, "About", hWnd, lpfnAboutDlgProc);
  354.             FreeProcInstance(lpfnAboutDlgProc);
  355.             return 0;
  356.  
  357.          case IDM_Pick :
  358.             lpfnPickDlgProc = MakeProcInstance(PickDlgProc, hInst);
  359.             hDlgModeLess = CreateDialog(hInst, "Pick", hWnd, lpfnPickDlgProc);
  360.             return 0;
  361.  
  362.          case IDWHELP :
  363.             WinHelp(hWnd, szHelpFileName, HELP_INDEX, 0L);
  364.             return 0;
  365.  
  366.          }
  367.  
  368.       break;
  369.  
  370.    case WM_SIZE :
  371.    case WM_MOVE :
  372.      (*lpfnDlgMove)();
  373.       break;
  374.  
  375.    case WM_COMMAND :
  376.       hMainMenu = GetMenu(hWnd);
  377.  
  378.       switch (wParam)
  379.          {
  380.          case IDM_ABOUT :
  381.             lpfnAboutDlgProc = MakeProcInstance(AboutDlgProc, hInst);
  382.             DialogBox(hInst, "About", hWnd, lpfnAboutDlgProc);
  383.             FreeProcInstance(lpfnAboutDlgProc);
  384.             return 0;
  385.  
  386.          case IDWHELP :
  387.             WinHelp(hWnd, szHelpFileName, HELP_INDEX, 0L);
  388.             return 0;
  389.  
  390.          case IDXLARROW : 
  391.             strcpy(szType, "IDXLARROW");
  392.             break;
  393.  
  394.          case IDXRARROW : 
  395.             strcpy(szType, "IDXRARROW");
  396.             break;
  397.  
  398.          case IDXOUTLINE :
  399.             strcpy(szType, "IDXOUTLINE");
  400.             break;
  401.  
  402.          case IDXVISIBLE :
  403.             strcpy(szType, "IDXVISIBLE");
  404.             break;
  405.  
  406.          case IDXSUM     :
  407.             strcpy(szType, "IDXSUM");
  408.             break;
  409.  
  410.          case IDXBOLD    :
  411.             strcpy(szType, "IDXBOLD");
  412.             break;
  413.  
  414.          case IDXITALIC  :
  415.             strcpy(szType, "IDXITALIC");
  416.             break;
  417.  
  418.          case IDXLJUST   :
  419.             strcpy(szType, "IDXLJUST");
  420.             break;
  421.  
  422.          case IDXCENTER  :
  423.             strcpy(szType, "IDXCENTER");
  424.             break;
  425.  
  426.          case IDXRJUST   :
  427.             strcpy(szType, "IDXRJUST");
  428.             break;
  429.  
  430.          case IDXSELECT  :
  431.             strcpy(szType, "IDXSELECT");
  432.             break;
  433.  
  434.          case IDXLINE    :
  435.             strcpy(szType, "IDXLINE");
  436.             break;
  437.  
  438.          case IDXRECT    :
  439.             strcpy(szType, "IDXRECT");
  440.             break;
  441.  
  442.          case IDXOVAL    :
  443.             strcpy(szType, "IDXOVAL");
  444.             break;
  445.  
  446.          case IDXARC     :
  447.             strcpy(szType, "IDXARC");
  448.             break;
  449.  
  450.          case IDXCHART   :
  451.             strcpy(szType, "IDXCHART");
  452.             break;
  453.  
  454.          case IDXTEXT    :
  455.             strcpy(szType, "IDXTEXT");
  456.             break;
  457.  
  458.          case IDXBTN     :
  459.             strcpy(szType, "IDXBTN");
  460.             break;
  461.  
  462.          case IDXCAMERA  :
  463.             strcpy(szType, "IDXCAMERA");
  464.             break;
  465.  
  466.          default :
  467.             return 0;
  468.          }
  469.  
  470.       MessageBox(hWnd, szType, szAppName, MB_ICONEXCLAMATION | MB_OK);
  471.       return 0;
  472.  
  473.  
  474.    case WM_DESTROY :
  475.       PostQuitMessage(0);
  476.       return 0;
  477.    }
  478. return DefWindowProc(hWnd, message, wParam, lParam);
  479. }                                       /* long FAR PASCAL WndProc */
  480.  
  481. /*============================================================================
  482.   MakeHelpPathName -- sets up the path-spec for the help function
  483.  
  484.   File      : testclik.C
  485.  
  486.   Prototype : void MakeHelpPathName(char *);
  487.  
  488.   Call      : MakeHelpPathName(szFileName);
  489.  
  490.   Library   : 
  491.  
  492.   7 February 1992 - dlcampbell
  493.   (c) 1991 Campbell SoftWare
  494. ----------------------------------------------------------------------------*/
  495. void MakeHelpPathName (char * szFileName)
  496. {
  497. char *pcFileName;
  498. int  nFileNameLen;
  499.  
  500. nFileNameLen = GetModuleFileName(hInst,szFileName,EXE_NAME_MAX_SIZE);
  501. pcFileName = szFileName + nFileNameLen;
  502.  
  503. while (pcFileName > szFileName)
  504.    {
  505.    if (*pcFileName == '\\' || *pcFileName == ':')
  506.       {
  507.       *(++pcFileName) = '\0';
  508.       break;
  509.       }
  510.    nFileNameLen--;
  511.    pcFileName--;
  512.    }
  513.  
  514. if ((nFileNameLen+13) < EXE_NAME_MAX_SIZE)
  515.    lstrcat(szFileName, "testclik.hlp");
  516. else
  517.    lstrcat(szFileName, "?");
  518. return;
  519. }                                       /* MakeHelpPathName */
  520.